System and method of streaming data over a distributed infrastructure

ABSTRACT

A system and method of streaming data in real time and, more particularly, a system and method of real time streaming of data over a grid network or other distributed infrastructure. The method and system comprises updating a content directory of a root server with end resource information. The method and system further includes processing the end resource information to determine connection locations for streaming data to at least one requesting end resource in a network.

FIELD OF THE INVENTION

The invention generally relates to a system and method of streaming datain real time across a wide area network and, more particularly, to asystem and method of real time streaming of data over a grid network orother distributed infrastructure.

BACKGROUND OF THE INVENTION

Managing multiple separate point-to-point connections from a storagesource to an end user or application is very inefficient, as the samepiece of information will be sent multiple times simultaneously.Consider the example of a group of people in one office listening to anaudio stream from a server somewhere on the Internet, where everyone inthe room is listening to the same streaming content, such as aconference call.

In known systems, data is streamed by unicast or point-to-pointalgorithms such as a TCPIP/IP connection from a centralized location(for example a Real Audio server) or by the use of a multicast. The useof IP multicasting is a method to reduce a huge amount of bandwidth andwaste by only sending the data out to a preset collection of multicastnodes. The drawbacks to using multicasting is that the preset number ofmulticast nodes must be known beforehand and many routers over thepublic Internet do not understand the multicast protocol. Thus,multicasting is limited to synchronized streams, and foreknowledge ofthe multicast servers is required.

P2P protocols, through the use of complex hashing algorithms, can pullmultiple file segments from separate sources and re-assemble thosesegments into a file. P2P protocols, however, require that the sourcefile must be intact first, before the audio or video can be viewed.Also, regular TCP/IP can be wasteful of bandwidth, as it requires highutilization from the streaming data server. Also, systems require thatthe file be re-assembled before playback, and therefore, cannot bestreamed. Thus, while the file transfer protocols are much moreefficient, they do not allow for multiple streams to be re-assembledreal-time and operated upon real-time.

Accordingly, there exists a need in the art to overcome the deficienciesand limitations described hereinabove.

SUMMARY OF THE INVENTION

In a first aspect of the invention a method comprises updating a contentdirectory of a root server with end resource information. The methodfurther includes processing the end resource information to determineconnection locations for streaming data to at least one requesting endresource in a network.

In another aspect of the invention, the method comprises updating acontent directory of the root directory with information related to aconnected end user resource and creating a hierarchy of end userresources as the end user resource is connected with the root server.The method further comprises determining a connection location withinthe hierarchy of end user resources including the root server forreceiving streamed data, the determining being based on information inthe content directory.

In yet another aspect of the invention, a system comprising a serverhaving a database contains data associated with one or more end userresources and connection information. At least one of a hardware andsoftware component dynamically creates a data source hierarchy of theend user resources based on the data. The at least one of a hardware andsoftware component provides connection locations to each of the end userresources that request access to the data stream. Each of the end userresources that request access to the data stream becomes part of thedata source hierarchy.

In still another aspect of the invention, a computer program productcomprises a computer usable medium having readable program code embodiedin the medium. The computer program product includes at least onecomponent to: update a content directory of a root server with endresource information; and process the end resource information todetermine connection locations for streaming data to at least onerequesting end resource in a network.

In a still further aspect of the invention, a method for deploying anapplication for streaming data over a network, comprises providing acomputer infrastructure operable to: dynamically create a data sourcehierarchy of end user resources based on information associated with theend user resources which are connected to a root server, and provideconnection locations to each of the end user resources that requestaccess to a data stream streaming from one or more of the end userresources of the data source hierarchy and/or the root server.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an illustrative environment for implementing the steps inaccordance with the invention;

FIG. 2 shows a block diagram of an embodiment in accordance with theinvention;

FIG. 3 is a flow chart of steps for implementing aspects of theinvention; and

FIG. 4 is a flow chart of steps for implementing aspects of theinvention.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

The invention generally relates to a system and method of streaming datain real time and, more particularly, to a system and method of real timestreaming of data over a grid network or other distributedinfrastructure. In embodiments, the system and method dynamicallycreates and maintains a hierarchy of data storage resources within agrid infrastructure to allow for efficient streaming of data to multipleend users and applications simultaneously. The storage resources aredynamically created based on, for example, the type and location of theend users and the applications that are accessing the streamed data,amongst other variables and combinations contemplated by the invention.In embodiments, to dynamically create the data source hierarchy, eachend resource that requests access to the data stream becomes part of thestream tree. The system and method of the invention can be implementedusing standard unicast protocols such as TCP/IP.

By using the invention, it is possible to reduce the amount of data thatneeds to flow over a distributed Information Technology (IT)infrastructure without the restrictions of IP multicasting. The systemand method of the invention also solves the problem of one-to-manydistribution of streaming data using standard unicast algorithms such assimple TCP/IP. In addition, the system and method is configured to allowdata streaming from different sources simultaneously which is not “fileblock” dependent, e.g., streaming audio from one server and video fromanother. The different data streams can be combined on a local resource,i.e., at the requesting end user. Moreover, the invention is configuredto operate upon multiple streams of data in real-time thus effectivelymanaging streaming nodes dynamically across the distributed ITenterprise.

Thus, as further discussed below, the system and method of the inventionis configured to, amongst other things:

-   -   (i) cache streaming data over disparate data storage devices to        reduce overall bandwidth requirements, server utilization, and        to increase data transfer rates;    -   (ii) separate a data stream into multiple parts such that an end        resource can retrieve these separate streams from separate        sources;    -   (iii) allow end resources the ability to start, stop, and/or        pause data streams without affecting other end users; and    -   (iv) create and manage streaming nodes dynamically across the        distributed IT enterprise.

FIG. 1 shows an illustrative environment 10 for managing the processesin accordance with the invention. To this extent, the environment 1 0includes a computer infrastructure 12 that can perform the processesdescribed herein. In particular, the computer infrastructure 12 includesa computing device 14 that comprises a management system 30, which makescomputing device 14 operable to dynamically manage real time streamingof data over a grid network or other distributed infrastructure inaccordance with the invention, e.g., process described herein. Thecomputing device 14 includes a processor 20, a memory 22A, aninput/output (I/O) interface 24, and a bus 26. Further, the computingdevice 14 is in communication with an external I/O device/resource 28and a storage system 22B.

In general, the processor 20 executes computer program code, which isstored in memory 22A and/or storage system 22B. While executing computerprogram code, the processor 20 can read and/or write data to/from memory22A, storage system 22B, and/or I/O interface 24. The bus 26 provides acommunications link between each of the components in the computingdevice 14. The I/O device 28 can comprise any device that enables anindividual to interact with the computing device 14 or any device thatenables the computing device 14 to communicate with one or more othercomputing devices using any type of communications link.

The computing device 14 can comprise any general purpose computingarticle of manufacture capable of executing computer program codeinstalled thereon (e.g., a personal computer, server, handheld device,etc.). However, it is understood that the computing device 14 is onlyrepresentative of various possible equivalent-computing devices that mayperform the processes described herein. To this extent, in embodiments,the functionality provided by computing device 14 can be implemented bya computing article of manufacture that includes any combination ofgeneral and/or specific purpose hardware and/or computer program code.In each embodiment, the program code and hardware can be created usingstandard programming and engineering techniques, respectively.

Similarly, the computer infrastructure 12 is only illustrative ofvarious types of computer infrastructures for implementing theinvention. For example, in embodiments, the computer infrastructure 12comprises two or more computing devices (e.g., a server cluster) thatcommunicate over any type of communications link, such as a network, ashared memory, or the like, to perform the process described herein.Further, while performing the process described herein, one or morecomputing devices in the computer infrastructure 12 can communicate withone or more other computing devices external to computer infrastructure12 using any type of communications link. The communications link cancomprise any combination of wired and/or wireless links; any combinationof one or more types of networks (e.g., the Internet, a wide areanetwork, a local area network, a virtual private network, etc.); and/orutilize any combination of transmission techniques and protocols. Asdiscussed herein, the management system 30 enables the computerinfrastructure 12 to dynamically manage real time streaming of data overa grid network or other distributed infrastructure.

FIG. 2 shows a block diagram of a system in accordance with the presentinvention. As seen in FIG. 2, the system includes a root server 100 and“n” number of requesting servers 200 a, 200 b (e.g., end resources). Thesystem is configured to allow the components to transmit and send datato one another via a network. Although only two requesting servers areshown in FIG. 2, it is understood that three or more (e.g., hundreds)requesting servers are also contemplated by the invention.

The root server 100 is designated as the master stream server forbroadcasting a stream of content, e.g., a data stream, in real-time. Asshould be understood, the root server 100 may be implemented in thecomputer infrastructure of FIG. 1. For example, the root server 100 maybe the computing device 14 of FIG. 1.

The root server 100 includes a cache table (content directory) 100 aconfigured to store information associated with the requesting servers200 a, 200 b. In this manner, the cache table 100 a acts as a contentdirectory, listing the locations of other servers or end resources inthe enterprise amongst other information. The caching table (contentdirectory) 100 a is dynamically built, in real-time.

As each requesting server is connected to the network, the cache table100 a is updated with information related to the requesting servers 200a, 200 b such as, for example, information and/or characteristics of andassociated with the requesting servers 200 a, 200 b. The cache table 100a can be continuously and dynamically updated, in real-time, as each newrequesting server is connected to the network or a triggering eventoccurs. The updated information may include:

-   -   (i) listings of the locations of the connected servers and other        resources in the enterprise,    -   (ii) the data requested from the requesting server(s), e.g.,        audio, video, etc.,    -   (iii) the bandwidth capabilities of the requesting server(s),    -   (iv) the quality of data which is requested to be received from        the root server, and/or    -   (v) the applications that are accessing the streamed data, in        addition to a host of other system dependent information.        The triggering event, on the other hand, may be a new        connection, a different connection, a stop or pause event of the        streaming data, or other event which affects the streaming of        the data. The information and triggering event may be        transmitted to and used by any of the requesting servers to make        a connection determination to either the root server 100 or        another end resource.

The root server 100 may stream/broadcast content and other types of datato the requesting servers 200 a, 200 b via the network. The datatransmitted by the root server 100 may be streamed content or theinformation associated with other requesting servers such as, forexample, bandwidth capabilities of the requesting server(s), quality ofdata which is requested to be received from the root server, in additionto other dependent system information.

The root server 100 is configured to obtain content from a database 300,which is streamed to the end resources such as, for example, therequesting servers 200 a, 200 b. The database 300 may be external orinternal to the root server 100, depending on the configuration of thesystem. The database 300 is configured to store a specific set of dataor content (e.g. audio, video, or any continuous stream, etc.).

The requesting servers 200 a, 200 b, in embodiments, may be dedicateddata storage resources on the grid infrastructure (network) or multipleend user machines running over a network, to name just two differentembodiments contemplated by the invention. As further embodimentscontemplated by the invention, the requesting servers may be any typesof end user machine including, but not limited to, a server, in a clientserver relationship, a user workstation or a personal computer. Inembodiments, the requesting servers 200 a, 200 b may locally storeinformation associated with other servers, content, etc., as discussedwith reference to the cache table 100 a. The stored information on therequesting servers 200 a, 200 b may be used in the same or similarmanner as the information stored in the cache table 100 a.

The requesting servers 200 a, 200 b each include a database which storesthe requested data, i.e., content stream, and possibly the locations andcharacteristics of other servers in the enterprise. The databases alsobuffer a predetermined amount of the content stream, which may be usedto (i) provide content to other requesting servers or (ii) ensure thatthe content stream is not interrupted when a streaming server stops orpauses the streaming data.

In embodiments, each of the requesting servers 200 a, 200 b may streamcontent, in real-time, to other requesting servers, upon authenticationand authorization. More specifically, in embodiments, the requestingservers 200 a, 200 b may be dynamically created into a hierarchical setof streaming data resources as the real-time data stream is beingbroadcast. For example, the server 200 a, upon request andauthentication of requesting server 200 b, may stream data (content) tothe requesting server 200 b. The streamed data, though, is originatedfrom the root server 200 a.

By way of non-limiting illustration, upon the correct authentication andauthorization, end resources can request data from the root server 100.As each end resource communicates with the root server 100, the rootserver 100 will add the address information, amongst other data such asthe requested data, broadcast requests (bandwidth, quality), etc. intoits cache table 100 a. With such information available, the root server100 will send the information stored in the cache table 100 a to therequesting server 200 b. Upon receipt of such information, therequesting server 200 b can process this information and, upon making alocation determination, request that the streaming data be broadcastfrom the root server 100, another requesting server 200 a or acombination thereof. This determination may be based on many differentcriteria (i.e., information stored in the cache table 100 a) including,but not limited to:

-   -   (i) The location to the requesting server 200 b to the root        server 100 and other requesting server 200 a;    -   (ii) The type of content requested, e.g., high quality content        vs. low quality content, video, audio, etc.; and/or    -   (iii) The amount of bandwidth that the resource is willing to        use up to receive the data stream, etc.        In this way, the content can be requested from any source        dynamically and in real-time during the actual streaming of the        data.

Thus, in embodiments, initially there is only one stream server, i.e.,the root server 100. However, as multiple new end resources request thesame stream of data, the server 100 provides information, from its cachetable 100 a, to the end resources for making a connection determinationto any number of machines. In this manner, the system and method canstream data from different sources simultaneously, resulting in thedynamic creation of a data source hierarchy, where each end resourcethat requests access to the data stream can become part of the streamtree, e.g., a proxy stream server.

When the end resource receives the data stream, it updates the rootcache table 100 a with its information, including the delay of thestream it is receiving, which pieces of the stream that it is receivingfrom which server (e.g., just audio, audio and video, quality, etc. fromwhich server), etc. This allows the cache table 100 a to be constantlyupdated, thus ensuring that the end resources obtain the most updatedinformation when making connection decisions.

In embodiments, the system and method is configured to permit any of theend resource(s) (e.g., requesting servers, 200 a, 200 b) to obtaindifferent content pieces from multiple sources. By way of non-limitingexample, the end resource, e.g., server 200 b, may request high qualityvideo data from the root server 100 and audio data from anotherrequesting server, e.g., server 200 a. In this process, the endresource, e.g., server 200 b, makes a determination, based on ananalysis of the information received from the root server 100, as towhich type of data it will receive from which particular streamserver(s). The stream server may be the root server or other endresource(s) or a combination thereof, for example. In embodiments, thereceiving (requesting) end resource can use a plurality of methodsincluding but not limited to ping, bandwidth, hop count, etc. to findthe best matching resources.

Once the end resource receives the different pieces of content fromdifferent sources, the end resource can locally recombine the datastreams into a complete data stream of content, as can be implemented bythose of ordinary skill in the art using well-known algorithms.Accordingly, the end resources are capable of reassembling and operatingupon multiple streams of data in real-time, whereby the system is thuscapable of effectively managing streaming nodes dynamically across thedistributed IT enterprise. In this way, the system and method isconfigured to dynamically create and maintain a hierarchy of disparatedata storage resources within the distributed infrastructure to allowdata streaming from different sources simultaneously. The streaming datais not “file block” dependent, e.g., streaming audio from one server andvideo from another.

In further implementations, each requesting server 200 a, 200 b may actindependently of one another. That is, each requesting server 200 a, 200b may pause, stop or start the streaming data without affecting otherend users. This is further described with reference to FIGS. 3 and 4.

FIG. 3 is a flow diagram implementing steps of the invention which maybe implemented in the environment of FIG. 1. FIG. 3 (and all other flowdiagrams) equally represents a high-level block diagram of theinvention. The steps of FIG. 3 (and all other flow diagrams) may beimplemented and executed from either a server, in a client serverrelationship, or they may run on a user workstation with operativeinformation conveyed to the user workstation to dynamically manage realtime streaming of data over a grid network or other distributedinfrastructure. Additionally, the invention can take the form of anentirely hardware embodiment, an entirely software embodiment or anembodiment containing both hardware and software elements.

In an embodiment, the invention is implemented in software, whichincludes but is not limited to firmware, resident software, microcode,etc. Furthermore, the invention can take the form of a computer programproduct accessible from a computer-usable or computer-readable mediumproviding program code for use by or in connection with a computer orany instruction execution system. The software and/or computer programproduct can be implemented in the environment of FIG. 1. For thepurposes of this description, a computer-usable or computer readablemedium can be any apparatus that can contain, store, communicate,propagate, or transport the program for use by or in connection with theinstruction execution system, apparatus, or device. The medium can be anelectronic, magnetic, optical, electromagnetic, infrared, orsemiconductor system (or apparatus or device) or a propagation medium.Examples of a computer-readable medium include a semiconductor or solidstate memory, magnetic tape, a removable computer diskette, a randomaccess memory (RAM), a read-only memory (ROM), a rigid magnetic disk andan optical disk. Current examples of optical disks include compactdisk—read only memory (CD-ROM), compact disc—read/write (CD-R/W) andDVD.

FIG. 3 shows an implementation of the processes using, for example,unicasting methodologies. The example of FIG. 3 starts with onestreaming server, e.g., root server. This streaming server originallycontains the source data to be streamed. In step 300, an end resource,e.g., server 1, requests access to the streaming data source. Toaccomplish this process, in embodiments, the end resource sends aconnection request command (authentication and authorization process) tothe root server to request a particular data stream. Included with theconnection request may be, for example, information on the level ofquality that the end resource wishes to receive and the amount ofbandwidth that the resource is willing to use up to receive the datastream.

In step 305, upon acknowledgement of the request, the root serverupdates the content directory (cache table) for requests to includeserver 1. In step 307, the root server tags server 1 as a “tier 1” node,i.e., it is one hop away from the root node.

In step 310, the request is sent back to the root server process. Instep 315, the root server sends the content to the requester at thequality level requested by server 1. The root server uses a unicaststreaming protocol such as regular TCP/IP. This is synonymous with aregular point to point protocol such as a Real Audio Server streaming toa Real Audio Client.

In step 320, a new end resource request for the same content arrivesfrom a second end user, e.g., server 2. In embodiments, server 2provides the requirements as to quality and bandwidth restrictions toreceive the data stream, similar to that described with reference toserver 1. In step 325, the new requester (server 2) is logged into thecontent directory (cache table) to determine the possible connectionlocations for requesting and receiving the requested data stream. In oneexample, server 2 will receive two locations, e.g., the root server athigh quality or server 1 at lower quality and delayed by a number ofseconds (since server 1 is one hop away from the root server).

At step 330, server 2 examines the information and makes a connectiondetermination. In this example, server 2 is collocated with server 1 andthe available data stream from server 1 meets its requirements. In step335, server 2 connects to server 1 at which time it can start to receivethe data stream. The content directory (cache table) is updated with theconnection information.

Although not necessarily in this order, in step 340, server 2 is taggedas a “tier 2” server because it is two hops away from the root server.In step 345, the content directory on the root node is updated toinclude server 2 as a “tier 2” stream server. Server 2 may also betagged as tier 1 if it receives information directly from the rootserver.

In embodiments, the servers can be tagged with various tiers, dependingon which piece of the data streamed from a particular source. An exampleof this embodiment includes the example of the server obtaining highquality data from the root source and low quality data from anotherrequesting server. In this scenario, a tier 1 tag is associated withhigh quality data and a tier 2 tag is associated with the low qualitydata. Basically, server 2 is tagged as a “tier 1” server for highquality data because it is one hop away from the root server; whereas,server 2 is tagged as a “tier 2” server for low quality data because itis two hops away from the root server.

As should be understood this same process may continue with more thantwo end resources, using the steps as described above. By way ofexample, another end resource (e.g., server 3), may request data fromserver 1, server 2, the root server or any combination thereof. In thisexample, server 3 accesses the root server, which will update thecontent directory (cache table) to include server 3 information.Directory information will be sent to server 3 for processing in orderto determine one or more location connections based on the criteria ofserver 3. By illustration, server 2 requests high quality video data andlower quality audio data.

Based on information received from the root server, server 3 is providedwith three possible location connections, e.g., high quality video datafrom the root server and low quality audio data from either of server 1or server 2. Making the determination that the high quality video datawill be streamed from the root server and the low quality audio datawill be streamed from server 2, the root server will tag server 2 as atier 1 and/or tier 2. In this scenario, as to the audio stream, server 2will be tagged tier 1 if the audio stream is originating from only theroot server. Otherwise, server 2 will be tagged a tier 2 when the audiostream is diverted through server 1. In any scenario, the contentdirectory (cache table) is updated with the connection information.

In step 350, in the event that server 1 becomes unavailable (e.g., stopsor pauses), server 2 can connect back to the root server and re-requestaccess to the data stream. In this example, because there is no otherservers to stream from, server 2 can upgrade to a tier 1 node and startto receive the data stream directly from the root server. This latterstep is further explored in FIG. 4.

FIG. 4 is a flow diagram illustrating a non-limiting example of anaspect of the invention. This example shows that a streaming server canstop or pause the streamed data without affecting other end users. Instep 400, the requesting server, e.g., server 1, broadcasts informationto the another server, server 2. In step 405, server 1 either stops orpauses the streamed data. In step 410, server 2 is notified or becomesaware that server 1 has stopped or paused the streamed data. Theawareness may simply be that sever 2 is no longer receiving streamingdata from server 1. In step 412, the cache table is updated with thestop or pause time of server 1.

In step 41 5, server 2 uses its buffered content to ensure that there isno discernable interruption in the streamed data to the end user. Instep 420, server 2, logged into the cache table of the root server,determines other connection locations, noting that the cache table isupdated with the stop or pause time information of server 1. In step425, in one example, server 2 receives additional connection locationswhich it can receive the streamed data, e.g., the root server or fromserver 3. In step 430, server 2 will make a connection to a server whichprovides the streamed data at the particular location of the stop orpause time of server 1 or at any point within the buffered content. Thisinformation will be updated into the content directory in step 435.

In embodiments, the invention provides a business method that performsthe process steps of the invention on a subscription, advertising,and/or fee basis. That is, a service provider, such as a SolutionIntegrator, could offer to perform the processes described herein. Inthis case, the service provider can create, maintain, and support, etc.,a computer infrastructure that performs the process steps of theinvention for one or more customers. In return, the service provider canreceive payment from the customer(s) under a subscription and/or feeagreement and/or the service provider can receive payment from the saleof advertising content to one or more third parties.

While the invention has been described in terms of embodiments, thoseskilled in the art will recognize that the invention can be practicedwith modifications and in the spirit and scope of the appended claims.

1. A method, comprising: updating a content directory of a root serverwith end resource information; and processing the end resourceinformation to determine connection locations for streaming data to atleast one requesting end resource in a network.
 2. The method of claim1, wherein the processing is performed by the at least one requestingend resource.
 3. The method of claim 1, wherein the at least onerequesting end resource is two or more requesting end resourcescommunicating with the root server over the network.
 4. The method ofclaim 3, further comprising updating the content directory each time anew connection is made to the root server or a triggering event occurs.5. The method of claim 1, further comprising tagging each of the atleast one requesting end resources with a hierarchy level designation.6. The method of claim 5, wherein the tagging is based on a positionaway from the root server.
 7. The method of claim 3, wherein one of thetwo or more requesting end resources is a streaming server, responsiveto a request by another of the requesting end resources.
 8. The methodof claim 7, wherein the streaming server streams the streaming data tothe another of the requesting end resources over the network.
 9. Themethod of claim 7, wherein the streaming server is tagged as a firsttier streaming resource and the another of the requesting end resourcesis tagged as a second tier streaming resource.
 10. The method of claim7, further comprising updating the content directory with newinformation concerning the streaming server including at least one of atag type and a type of data which is streaming to the another of therequesting end resources.
 11. The method of claim 1, wherein each of therequesting end resources is configured to act independently of oneanother.
 12. The method of claim 1, wherein the root server isdesignated as a master stream server for broadcasting the data stream inreal-time to the at least one requesting end resource.
 13. The method ofclaim 1, wherein the content directory is dynamically built, inreal-time, as each of the at least one requesting end resources connectsto the root server.
 14. The method of claim 1, wherein the end resourceinformation includes information and/or characteristics of andassociated with the at least one requesting end resource.
 15. The methodof claim 14, wherein the end resource information includes at least oneof: listings of locations of connected requesting end resources; datarequested from the at least one requesting end resource; bandwidthrequests and/or bandwidth capabilities of the at least one requestingend resource; and quality of data which is requested to be received fromthe root server.
 16. The method of claim 15, wherein the resourceconnection information is used by the at least one requesting endresource to make a connection determination to the root server and/oranother end resource.
 17. The method of claim 1, wherein the at leastone requesting end resource is at least one of: data storage resourceson a grid infrastructure, multiple end user machines running over thenetwork, a server, in a client server relationship, a user workstationand a personal computer.
 18. The method of claim 1, further comprisingbuffering a predetermined amount of content stream on the at least onerequesting end resource to provide content to other requesting end usersor to ensure that the content is not interrupted when a streaming serverstops or pauses the streaming data.
 19. The method of claim 1, whereinthe at least one requesting end resource are two or more requesting endresources which are dynamically created into a hierarchical set ofstreaming data resources as the data stream is broadcast in real-time.20. The method of claim 1, wherein the root server receives a requestfrom the at least one requesting end resource and the root server willadd address information and broadcast requests into the contentdirectory.
 21. The method of claim 20, wherein the streaming data isstreamed from the root server, another requesting end resource or acombination thereof.
 22. The method of claim 21, wherein initially thereis only one streaming server, and as multiple new end resources requesta same stream of data, the root server provides information to therequesting end resources for making a connection determination to anynumber of machines.
 23. The method of claim 1, wherein the at least onerequesting end resource obtains pieces of the streamed data from theroot server, one or more of the at least one requesting end resource ora combination thereof.
 24. The method of claim 23, wherein the at leastone requesting end resource locally recombines the data streams into acomplete data stream of content.
 25. The method of claim 1, furthercomprising at least one of creating, maintaining and supporting acomputer infrastructure that performs the steps of claim
 1. 26. Themethod of claim 1, wherein a service provider, on a subscription,advertising, and/or fee basis, provides the verification information.27. A method, comprising: updating a content directory of a rootdirectory with information related to a connected end user resource;creating a hierarchy of end user resources as the end user resource isconnected with the root server; and determining a connection locationwithin the hierarchy of end user resources including the root server forreceiving streamed data, the determining being based on information inthe content directory.
 28. The method of claim 27, wherein the hierarchyis dynamically configured as the streamed data is broadcasting inreal-time.
 29. The method of claim 27, further comprising authenticationthe connected end resource.
 30. The method of claim 27, wherein the endresource sends a connection request command to the root server torequest a particular data stream.
 31. The method of claim 30, whereinthe connection request includes at least one of information on a levelof quality that the end resource wishes to receive and amount ofbandwidth that the end resource is willing to use up to receive thestreamed data.
 32. The method of claim 31, wherein the content directoryis updated after authentication of the connected end resource.
 33. Themethod of claim 27, further comprising tagging each connected end userresource in the hierarchy with a hierarchy level designation.
 34. Themethod of claim 33, wherein the tagging is based on a position away fromthe root server.
 35. The method of claim 33, wherein the tagging isbased on pieces of content received from the root directory or other endresource.
 36. The method of claim 33, wherein the end user resourcereceiving the streamed data directly from the root server is tagged as afirst tier streaming resource and another of the end user resourcesreceiving the streamed data from the first tier streaming resource istagged as a second tier streaming resource.
 37. The method of claim 27,wherein each of the end user resources is configured to actindependently of one another.
 38. The method of claim 27, wherein thecontent directory is dynamically built, in real-time, as each of the enduser resource connects to the root server.
 39. The method of claim 27,wherein the information includes information and/or characteristics ofand associated with the end user resources, including at least one of:listings of locations of connected end user resources; data requestedfrom the end user resources; bandwidth requests and/or bandwidthcapabilities of the end user resources; and quality of data which isrequested to be received from the root server.
 40. The method of claim27, further comprising buffering a predetermined amount of contentstream on the end user resources to provide content to other end userresources or to ensure that the content is not interrupted when astreaming server stops or pauses the streamed data.
 41. The method ofclaim 27, wherein the end user resources are two or more end userresources which are dynamically created into a hierarchical set ofstreaming data resources as the streamed data is broadcast in real-time.42. The method of claim 41, wherein the streamed data is streamed fromthe root server, one or more of the end user resources or a combinationthereof.
 43. The method of claim 27, wherein the end user resourceslocally recombine the streamed data into a complete data stream ofcontent.
 44. The method of claim 27, further comprising at least one ofcreating, maintaining and supporting a computer infrastructure thatperforms the steps of claim
 27. 45. The method of claim 27, wherein aservice provider, on a subscription, advertising, and/or fee basis,provides the verification information.
 46. A system comprising a serverhaving a database containing data associated with one or more end userresources and connection information, and at least one of a hardware andsoftware component for dynamically creating a data source hierarchy ofthe end user resources based on the data, the at least one of a hardwareand software component providing connection locations to each of the enduser resources that request access to a data stream, wherein each of theend user resources that request access to the data stream becomes partof the data source hierarchy.
 47. The system of claim 46, wherein the atleast one of a hardware and software component resides on a serverprovided by a service provider.
 48. The system of claim 46, wherein theat least one of a hardware and software component tags each connectedend user resource in the data source hierarchy with a hierarchy leveldesignation.
 49. The system of claim 48, wherein the tagging is based ona position away from a root server and on pieces of content receivedfrom a root directory of the root server or other end resource.
 50. Thesystem of claim 49, wherein the end user resource receiving the datastream directly from the root server is tagged as a first tier streamingresource and another of the end user resources receiving the data streamfrom the first tier streaming resource is tagged as a second tierstreaming resource.
 51. A computer program product comprising a computerusable medium having readable program code embodied in the medium, thecomputer program product includes at least one component to: update acontent directory of a root server with end resource information; andprocess the end resource information to determine connection locationsfor streaming data to at least one requesting end resource in a network.52. A method for deploying an application for streaming data over anetwork, comprising providing a computer infrastructure being operableto: dynamically create a data source hierarchy of end user resourcesbased on information associated with the end user resources which areconnected to a root server, and provide connection locations to each ofthe end user resources that request access to a data stream that isstreaming from one or more of the end user resources of the data sourcehierarchy and/or the root server.